package edu.uestc.wsn;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;

public class JFrameBackground extends Thread {

    private JFrame points;

    private JPanel imagePanel;

    protected ImageIcon background;

    private Map<String, LocRss> map;

    public JFrameBackground(Map<String, LocRss> map) {
        this.map = map;
        points = new RedPoint("Wireless Attacker Hunting", map);
        background = new ImageIcon("map.gif");// 背景图片
        JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面
        // 把标签的大小位置设置为图片刚好填充整个面板
        label.setBounds(0, 0, background.getIconWidth(), background
                .getIconHeight());
        JButton button = new JButton("Hide Names");
        points.add(button);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JButton b = (JButton) e.getSource();
                if (RedPoint.showName) {
                    b.setText("Show Names");
                    RedPoint.showName = false;
                } else {
                    b.setText("Hide Names");
                    RedPoint.showName = true;
                }
            }
        });
        // 把内容窗格转化为JPanel，否则不能用方法setOpaque()来使内容窗格透明
        imagePanel = (JPanel) points.getContentPane();
        imagePanel.setOpaque(false);
        // 内容窗格默认的布局管理器为BorderLayout
        imagePanel.setLayout(new FlowLayout());
        // imagePanel.add(new JButton("测试按钮"));

        points.getLayeredPane().setLayout(null);
        // 把背景图片添加到分层窗格的最底层作为背景
        points.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
        points.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        points.setSize(background.getIconWidth(), background.getIconHeight());
        points.setResizable(false);
        points.setVisible(true);

    }

    public void run() {
        while (true) {
            try {
                Thread.sleep(Constant.duration);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            points.repaint();
        }
    }

}
